package br.com.truta.control;

import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import javax.servlet.http.HttpServletRequest;

import br.com.truta.bd.DaoException;
import br.com.truta.bd.dao.MovimentacaoDAO;
import br.com.truta.model.Movimentacao;
import br.com.truta.model.Usuario;
import br.com.truta.util.Constantes;

public class MovimentacaoControl {
	
	public static boolean salvaMovimentacao(HttpServletRequest req) {
		try {
			Movimentacao movimentacao = mapeiaMovimentacao(req);
			return MovimentacaoDAO.insereMovimentacao(movimentacao);
		} catch (ParseException e) {
			// TODO tratar a Execao
			e.printStackTrace();
		} catch (DaoException e) {
			e.printStackTrace();
		}
		return false;
	}

	/**
	 * Classe responsavel por mapear os dados da Movimentacao
	 * da Pagina JSP Movimentacao para o objeto Movimentacao
	 * 
	 * @param req
	 * @return Movimentacao Mapeado
	 * @throws ParseException
	 */
	private static Movimentacao mapeiaMovimentacao(HttpServletRequest req) throws ParseException {
		Movimentacao movimentacao = new Movimentacao();
		SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
		Usuario usuario = (Usuario) req.getSession().getAttribute("usuario");  

		movimentacao.setData(new Date(formatador.parse(req.getParameter(Constantes.PARAMETRO_MOVIMENTACAO_DATA)).getTime()));
		movimentacao.setIdDespesa(Integer.parseInt(req.getParameter(Constantes.PARAMETRO_MOVIMENTACAO_ID_DESPESA)));
		movimentacao.setIdTipoDespesa(Integer.parseInt(req.getParameter(Constantes.PARAMETRO_MOVIMENTACAO_ID_TIPO_DESPESA)));
		movimentacao.setIdUsuario(usuario.getId());
		movimentacao.setObservacao(req.getParameter(Constantes.PARAMETRO_MOVIMENTACAO_OBSERVACAO));
		movimentacao.setTipoMovimentacao(req.getParameter(Constantes.PARAMETRO_MOVIMENTACAO_TIPO_MOVIMENTACAO));
		movimentacao.setValor(Float.parseFloat(req.getParameter(Constantes.PARAMETRO_MOVIMENTACAO_VALOR)));

		return movimentacao;
	}
}
